Next: Format Description, Previous: Data File Format, Up: Top [Contents][Index]
The Forms mode control file serves two purposes. First, it names the data file to use, and defines its format and properties. Second, the Emacs buffer it occupies is used by Forms mode to display the forms.
The contents of the control file are evaluated as a Lisp program. It should set the following Lisp variables to suitable values:
forms-fileThis variable specifies the name of the data file. Example:
(setq forms-file "my/data-file")
If the control file doesn’t set
forms-file, Forms mode reports an
error.
forms-format-listThis variable describes the way the fields of the record are formatted on the screen. For details, see Format Description.
forms-number-of-fieldsThis variable holds the number of fields in each record of the data file. Example:
(setq forms-number-of-fields 10)
If the control file does not set
forms-format-list a default format is used. In this
situation, Forms mode will deduce the number of fields from the
data file providing this file exists and
forms-number-of-records has not been set in the
control file.
The control file can optionally set the following additional Forms mode variables. Most of them have default values that are good for most applications.
forms-field-sepThis variable may be used to designate the string which
separates the fields in the records of the data file. If not
set, it defaults to the string "\t" (a Tab
character). Example:
(setq forms-field-sep "\t")
forms-read-onlyIf the value is non-nil, the data file is
treated read-only. (Forms mode also treats the data file as
read-only if you don’t have access to write it.)
Example:
(set forms-read-only t)
forms-multi-lineThis variable specifies the pseudo newline
separator that allows multi-line fields. This separator goes
between the “lines” within a field—thus,
the field doesn’t really contain multiple lines, but it
appears that way when displayed in Forms mode. If the value
is nil, multi-line text fields are prohibited.
The pseudo newline must not be a character contained in
forms-field-sep.
The default value is "\^k", the character
Control-K. Example:
(setq forms-multi-line "\^k")
forms-read-file-filterThis variable holds the name of a function to be called
after the data file has been read in. This can be used to
transform the contents of the data file into a format more
suitable for forms processing. If it is nil, no
function is called. For example, to maintain a gzipped
database:
(defun gzip-read-file-filter ()
(shell-command-on-region (point-min) (point-max)
"gzip -d" t t))
(setq forms-read-file-filter 'gzip-read-file-filter)
forms-write-file-filterThis variable holds the name of a function to be called
before writing out the contents of the data file. This can be
used to undo the effects of
forms-read-file-filter. If it is
nil, no function is called. Example:
(defun gzip-write-file-filter ()
(make-variable-buffer-local 'require-final-newline)
(setq require-final-newline nil)
(shell-command-on-region (point-min) (point-max)
"gzip" t t))
(setq forms-write-file-filter 'gzip-write-file-filter)
forms-new-record-filterThis variable holds a function to be called whenever a new
record is created to supply default values for fields. If it
is nil, no function is called. See Modifying
Forms Contents, for details.
forms-modified-record-filterThis variable holds a function to be called whenever a
record is modified, just before updating the Forms data file.
If it is nil, no function is called. See
Modifying Forms Contents, for details.
forms-insert-afterIf this variable is not nil, new records are
created after the current record. Also, upon
visiting a file, the initial position will be at the last
record instead of the first one.
forms-check-number-of-fieldsNormally each record is checked to contain the correct
number of fields. Under certain circumstances, this can be
undesirable. If this variable is set to nil,
these checks will be bypassed.
Next: Format Description, Previous: Data File Format, Up: Top [Contents][Index]